package org.generic.customgeneric.demo02;

/**
 * @author CSY
 * @date 2025 - 03 - 17
 */
public class CustomInterfaceGeneric {
    public static void main(String[] args) {

    }
}

//在继承接口时 指定泛型接口的类型
interface IA extends IUsb<String,Double>{

}

//当实现IA接口时，因为IA在继承IUsb接口时，指定了U为String R为Double
class AA implements IA{

    @Override
    public Double get(String s) {
        return 0.0;
    }

    @Override
    public void hi(Double aDouble) {

    }

    @Override
    public void run(Double r1, Double r2, String u1, String u2) {

    }
}

//实现接口时，直接指定泛型接口的类型
class BB implements IUsb<Integer,Float>{

    @Override
    public Float get(Integer integer) {
        return 0f;
    }

    @Override
    public void hi(Float aFloat) {

    }

    @Override
    public void run(Float r1, Float r2, Integer u1, Integer u2) {

    }
}

/**
 * 泛型接口使用说明
 * 1.在接口中静态成员不能使用泛型
 */
interface IUsb<U,R>{
    int n = 10;
    //U name; - 接口成员默认是静态 - 不能这样使用

    //普通方法 - 可以使用接口泛型
    R get(U u);

    void hi(R r);

    void run(R r1,R r2,U u1,U u2);

    default R method(U u ){
        return null;
    }
}


